; 代码清单6-1
; 文件说明: 主引导扇区代码
; 创建时间: 2024-09-22 20:36


jmp near start  ; 转移到代码段执行
; 数据段
mytext: db 'L', 0x07, 'a', 0x07, 'b', 0x07, 'e', 0x07, 'l', 0x07, ' ', 0x07, 'o', 0x07, 'f', 0x07, 'f', 0x07, 's', 0x07, \
            'e', 0x07, 't', 0x07, ':', 0x07
number: db 0, 0, 0, 0, 0

; 代码段
start:
    ; 初始化段地址
    mov ax, 0x7c0
    mov ds, ax

    mov ax, 0xb800
    mov es, ax

; 段间传送数据
    cld
    mov si, mytext
    mov di, 0
    mov cx, (number-mytext)/2
    rep movsw

; 计算地址各位数字
    mov ax, number      ; 数据偏移地址
    mov bx, ax
    mov cx, 5           ; 循环次数
    mov si, 10          ; 除数

digit:
    xor dx, dx
    div si
    mov [bx], dl
    inc bx
    loop digit

; 传送数字位到显存
    mov bx, number
    mov si, 0x04        ; 源数据偏移

show:
    mov al, [bx+si]
    add al, 0x30
    mov ah, 0x04
    mov [es:di], ax
    add di, 2
    dec si
    jns show

    mov word [es:di], 0x0744

    jmp near $
; 0填充为512字节
    times 510-($-$$) db 0
                     db 0x55, 0xaa